/* Usage: 实现收发功能，收消息没有限制，发消息需要信号，Switch判断发送，结构体发送指令，接收消息，接收文件*/
#ifndef CLIENT_H
#define CLIENT_H

#include "my_header.h"
#include <arpa/inet.h>
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
#include <sys/mman.h>
#include <netinet/in.h>
#include <wait.h>
#include <sys/stat.h>
#include <sys/epoll.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#define DEPTH 12
#define PATHLEN 32
#define LENGTH 1000

enum Command{
    CD,
    LS,
    PWD,
    PUTS,
    GETS,
    REMOVE,
    MKDIR,
    RMDIR
};

typedef struct SignalSend{
    int sig_t; //用数字代替信号
    int size; //路径个数
    char pathname[DEPTH][PATHLEN]; //接收路径
}SignalSend_t;

typedef struct FileBuf{
    int size; //信息长度
    char buf[LENGTH]; //接收信息
}FileBuf_t;

int SockfdCreate(char *argv1,char* argv2);
int EpollCreate(int sockfd);
int SendCommand(int sockfd, char* buf);
int RecvMsg(int sockfd);
int TransFile(int sockfd, char *pathname);
int RecvFile(int sockfd);

#endif
